package cn.xingzitech.common.id.snowflake;


import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * @author Bulgat
 * @description 定义加载config.properties文件的工具类
 */
public class SnowFlakeLoader {
    private volatile static Properties properties;
    public static final String MACHINE_ID = "machine.id";
    public static final String DATA_CENTER_ID = "data.center.id";
    /**
     * 默认的雪花算法配置文件路径
     */
    public static final String CONFIG_FILE_PATH="snowflake/config.properties";
    static {
        InputStream in = SnowFlakeLoader.class.getClassLoader().getResourceAsStream(CONFIG_FILE_PATH);
        properties = new Properties();
        try {
            properties.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 通过key获取properties文件中的String值
     * @param key
     * @return String
     */
    private static String getStrValue(String key){
        if (properties == null){
            return "";
        }
        return properties.getProperty(key,"");
    }

    /**
     * 通过key获取properties文件中的Long值
     * @param key
     * @return Long
     */
    private static Long getLongValue(String key){
        String v = getStrValue(key);
        return (v==null||v.trim().isEmpty())?null:Long.valueOf(v);
    }

    /**
     * 获取配置文件中的数据中心id
     * @return Long
     */
    public static Long getDataCenterId(){
        return getLongValue(DATA_CENTER_ID);
    }

    /**
     * 获取配置文件中的机器标识
     * @return Long
     */
    public static Long getMachineId(){
        return getLongValue(MACHINE_ID);
    }
}
